﻿<?php
header("Content-type:text/html;charset=utf-8;");


// 使用函数完成期末任务

//

/**

 * 获得指定仓库的提交信息

 * @param  string $url 仓库地址，默认每次200个

 * @return array      以数组形式返回提交的信息

 */



function getCommit($url = 'https://gitee.com/api/v5/repos/llkjhlkjh/phpfirst/commits?page=1&per_page=200') {



    // 初始化curl工具

    $ch = curl_init($url);



    // 进行必要的配置

    curl_setopt($ch, CURLOPT_HEADER, 0);

    // 取消curl显示返回内容

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // 跳过证书检查

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    //从证书中检查SSL加密算法是否存在

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

    // 执行curl

    $data = curl_exec($ch);

    // 对data进行解码，将其从json格式转化为php数组

    $data = json_decode($data, true);

    curl_close($ch);

    return $data;

}



// 使用函数输出每周作业提交次数

function getCommitByWeek(array $data) {



// 提取每一次作业的提交时间

    $commitDate = array();

    foreach ($data as $key => $value) {

        $commitDate[$key] = strtotime($data[$key]['commit']['commiter']['date']);

    }

    return $commitDate;

}



/**

 * 生成学期周次节点

 * @param  string $start 课程开始日期

 * @return array         包含19周上课时间节点的数组

 */

function weekly($start = '2018-03-05') {

    for ($i = 0; $i < 19; $i++) {

        $data[$i] = strtotime("+" . $i . " week", strtotime($start));

    }

    return $data;

}



/**

 * 获取每周作业推送次数

 * @param  array  $commits 学生作业推送信息数组

 * @return array           学生每周作业推送次数

 */

function getCountByWeek(array $commitDate = array()) {

    // 先得到学期时间节点

    $week = weekly();

    // 初始化数组

    $array = array();

    // 逐一比较

    for ($i = 0; $i < 19; $i++) {

        $array[$i] = 0;

        foreach ($commitDate as $key => $value) {

            if ($value >= $week[$i] && $value <= $week[$i + 1]) {

                $array[$i]++;

            }

        }

    }

    return $array;

}



/**

 * 生成作业总报告

 * @param  array $data 全部提交信息

 * @return void

 */

function report(array $data, array $countByWeek) {
    echo '姓名黎江华'.'<br>';
    echo '学号P161713192'.'<br>';

    echo '我的作业地址是：https://gitee.com/llkjhlkjh/phpfirst.git' . '<br>';

    echo '提交次数：' . count($data) . '次。<br>';
    $sum=0;

    foreach ($countByWeek as $key => $value) {

        echo '第' . ($key + 1) . '周提交作业' . $value . '次。<br>';
        if($value>0)
        {
            $sum=$sum+10;
        }
        if($sum>=100)
        {
            $sum=100;
        }
    }
    echo '总成绩为：' .$sum. '<br>';

}



// 取得指定仓库的提交信息

$data = getCommit('https://gitee.com/api/v5/repos/llkjhlkjh/phpfirst/commits?page=1&per_page=200');



$commitDate  = getCommitByWeek($data);

$countByWeek = getCountByWeek($commitDate);

report($data, $countByWeek);



// echo date('Y-m-d', strtotime('2018-05-23T18:03:16+08:00'));

echo '<pre>';

// var_dump($data);

var_dump($data[0]['commit']['author']['date']);

var_dump($commitDate);

var_dump($countByWeek);

echo '</pre>';

?>

